#ifndef CARDS_H
#define CARDS_H

#include "card.h"

#include <QSet>
class Cards
{
public:
    enum SortType{Asc, Desc, NoSort};
    Cards();

    // 添加扑克牌
    void add(Card& card);   // 添加一张牌
    void add(Cards& cards); // 添加多张牌

    // 一次性插入多个数据（操作符重载<<）
    Cards& operator <<(Card& card);
    Cards& operator <<(Cards& cards);

    // 删除扑克牌
    void remove(Card& card);
    void remove(Cards& cards);

    // 扑克牌的数量
    int cardCount();
    // 是否为空
    bool isEmpty();
    // 情空扑克牌
    void clear();

    // 最大点数
    Card::CardPoint maxPoint();
    // 最小点数
    Card::CardPoint minPoint();
    // 指定点数的牌的数量
    int pointCount(Card::CardPoint point);
    // 某张牌是否在集合中
    bool contains(const Card& card);
    // 某几张牌是否在集合中
    bool contains(const Cards& cards);

    // 随机抽取一张牌
    Card takeRandCard();

    // QVector<Card>
    // QSet -> QVector 将一个无序序列转化成有序序列
    CardList toCardList(SortType type = Desc);
private:

    // 容器，用于存储所有的牌
    QSet<Card> m_cards;
};

#endif // CARDS_H
